lexer grammar CalculatorLexer;

@header{
import java.util.*;
}

@parser::members{
Map<String, Integer> memory = new HashMap<>();

int eval(int left, int op, int right){
	switch(op){
		case MUL : return left*right;
		case DIV : return left/right;
		case ADD : return left+right;
		case SUB : return left-right;
	}
	return 0;
}
}

MUL  : '*';
DIV  : '/';
ADD  : '+';
SUB  : '-';

LEFTON  : '(';
RIGHTON   : ')';

INT : [0-9]+;
ID  : [a-zA-Z]+;

WS : [ \t\r\n]+ -> skip;